package com.ruoyi.project.system.domain;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

import com.ruoyi.framework.web.domain.BaseEntity;
import org.elasticsearch.common.geo.GeoPoint;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.GeoPointField;

/**
 * 部门表 sys_dept
 * 
 * @author ruoyi
 */
@Document(indexName = "ruoyi",type = "sysDept")
public class SysDept extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 部门ID */
    @Id
    private Long deptId;

    /** 父部门ID */
    private Long parentId;

    /** 祖级列表 */
    private String ancestors;

    /** 部门名称 */
    private String deptName;

    /** 抽成 */
    private String percent;

    /** 显示顺序 */
    private String orderNum;

    /** 负责人 */
    private String leader;

    /** 联系电话 */
    private String phone;

    /** 经度 */
    private String lng;

    /** 纬度 */
    private String lat;

    /** 省 */
    private String province;

    /** 市 */
    private String city;

    /** 区 */
    private String district;

    /** 街道 */
    private String street;

    /** 详细地址 */
    private String address;

    /** 支付宝账号 */
    private String account;

    /** 邮箱 */
    private String email;

    private double floatDeliveryFee;

    private double floatMinimumOrderAmount;

    /** 店铺简介 */
    private String description;
    /** 店铺标语 */
    private String promotionInfo;
    /** 营业时间 */
    private String startTime;
    /** 营业时间 */
    private String endTime;
    /** 配送方式 */
    private String delivery;

    /** 配送方式 */
    private String deliveryStr;

    /** 营业类型 */
    private String type;

    /** 部门状态:0正常,1停用 */
    private String status;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    /** 父部门名称 */
    private String parentName;

    /** 子部门 */
    private List<SysDept> children = new ArrayList<SysDept>();


    /** 分类组 */
    private Long[] categoryIds;

    /** 属性组 */
    private Long[] attrIds;

    /** 属性组 */
    private List<SysAttr> attrData;

    /** 分类组 */
    private List<SysCategory> categoryData;

    /**
     * 图片列表
     */
    private List<SysDeptImg> fileList;

    /**
     * 坐标点
     */
    @GeoPointField
    private GeoPoint geo;

    /**
     * 距离
     */
    private String distance;

    private List<Map> activities;


    public Long getDeptId()
    {
        return deptId;
    }

    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }

    public Long getParentId()
    {
        return parentId;
    }

    public void setParentId(Long parentId)
    {
        this.parentId = parentId;
    }

    public String getAncestors()
    {
        return ancestors;
    }

    public void setAncestors(String ancestors)
    {
        this.ancestors = ancestors;
    }

    public String getDeptName()
    {
        return deptName;
    }

    public void setDeptName(String deptName)
    {
        this.deptName = deptName;
    }

    public String getOrderNum()
    {
        return orderNum;
    }

    public void setOrderNum(String orderNum)
    {
        this.orderNum = orderNum;
    }

    public String getLeader()
    {
        return leader;
    }

    public void setLeader(String leader)
    {
        this.leader = leader;
    }

    public String getPhone()
    {
        return phone;
    }

    public void setPhone(String phone)
    {
        this.phone = phone;
    }

    public String getEmail()
    {
        return email;
    }

    public void setEmail(String email)
    {
        this.email = email;
    }

    public String getStatus()
    {
        return status;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getDelFlag()
    {
        return delFlag;
    }

    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }

    public String getParentName()
    {
        return parentName;
    }

    public void setParentName(String parentName)
    {
        this.parentName = parentName;
    }


    public String getPercent() {
        return percent;
    }

    public void setPercent(String percent) {
        this.percent = percent;
    }

    public String getLng() {
        return lng;
    }

    public void setLng(String lng) {
        this.lng = lng;
    }

    public String getLat() {
        return lat;
    }

    public void setLat(String lat) {
        this.lat = lat;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getDistrict() {
        return district;
    }

    public void setDistrict(String district) {
        this.district = district;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public List<SysDept> getChildren()
    {
        return children;
    }

    public void setChildren(List<SysDept> children)
    {
        this.children = children;
    }

    public List<SysDeptImg> getFileList() {
        return fileList;
    }

    public void setFileList(List<SysDeptImg> fileList) {
        this.fileList = fileList;
    }

    public Long[] getCategoryIds() {
        return categoryIds;
    }

    public void setCategoryIds(Long[] categoryIds) {
        this.categoryIds = categoryIds;
    }

    public Long[] getAttrIds() {
        return attrIds;
    }

    public void setAttrIds(Long[] attrIds) {
        this.attrIds = attrIds;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getPromotionInfo() {
        return promotionInfo;
    }

    public void setPromotionInfo(String promotionInfo) {
        this.promotionInfo = promotionInfo;
    }

    public String getStartTime() {
        return startTime;
    }

    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }

    public String getEndTime() {
        return endTime;
    }

    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }

    public String getDelivery() {
        return delivery;
    }

    public void setDelivery(String delivery) {
        this.delivery = delivery;
    }

    public double getFloatDeliveryFee() {
        return floatDeliveryFee;
    }

    public void setFloatDeliveryFee(double floatDeliveryFee) {
        this.floatDeliveryFee = floatDeliveryFee;
    }

    public double getFloatMinimumOrderAmount() {
        return floatMinimumOrderAmount;
    }

    public void setFloatMinimumOrderAmount(double floatMinimumOrderAmount) {
        this.floatMinimumOrderAmount = floatMinimumOrderAmount;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }


    @Override
    public String toString() {
        return "SysDept{" +
                "deptId=" + deptId +
                ", parentId=" + parentId +
                ", ancestors='" + ancestors + '\'' +
                ", deptName='" + deptName + '\'' +
                ", percent='" + percent + '\'' +
                ", orderNum='" + orderNum + '\'' +
                ", leader='" + leader + '\'' +
                ", phone='" + phone + '\'' +
                ", lng='" + lng + '\'' +
                ", lat='" + lat + '\'' +
                ", province='" + province + '\'' +
                ", city='" + city + '\'' +
                ", district='" + district + '\'' +
                ", street='" + street + '\'' +
                ", address='" + address + '\'' +
                ", account='" + account + '\'' +
                ", email='" + email + '\'' +
                ", floatDeliveryFee=" + floatDeliveryFee +
                ", floatMinimumOrderAmount=" + floatMinimumOrderAmount +
                ", description='" + description + '\'' +
                ", promotionInfo='" + promotionInfo + '\'' +
                ", startTime='" + startTime + '\'' +
                ", endTime='" + endTime + '\'' +
                ", delivery='" + delivery + '\'' +
                ", deliveryStr='" + deliveryStr + '\'' +
                ", type='" + type + '\'' +
                ", status='" + status + '\'' +
                ", delFlag='" + delFlag + '\'' +
                ", parentName='" + parentName + '\'' +
                ", children=" + children +
                ", categoryIds=" + Arrays.toString(categoryIds) +
                ", attrIds=" + Arrays.toString(attrIds) +
                ", attrData=" + attrData +
                ", categoryData=" + categoryData +
                ", fileList=" + fileList +
                '}';
    }

    public String getDeliveryStr() {
        return deliveryStr;
    }

    public void setDeliveryStr(String deliveryStr) {
        this.deliveryStr = deliveryStr;
    }

    public List<SysAttr> getAttrData() {
        return attrData;
    }

    public void setAttrData(List<SysAttr> attrData) {
        this.attrData = attrData;
    }

    public List<SysCategory> getCategoryData() {
        return categoryData;
    }

    public void setCategoryData(List<SysCategory> categoryData) {
        this.categoryData = categoryData;
    }


    public List<Map> getActivities() {
        return activities;
    }

    public void setActivities(List<Map> activities) {
        this.activities = activities;
    }

    public GeoPoint getGeo() {
        return geo;
    }

    public void setGeo(GeoPoint geo) {
        this.geo = geo;
    }

    public String getDistance() {
        return distance;
    }

    public void setDistance(String distance) {
        this.distance = distance;
    }
}
